/**
 * BaseParentClass
 * @author LL
 * @date 2022-01-23 上午 12:36
 **/
export class BaseObject extends Object {

    public hashCode(): number {
        return 0
    }

    public equals(o: any): boolean {
        if (o === null || o === undefined) {
            return false
        }
        return this === o
    }

    /**
     * 可以克隆?
     * 默认实现 始终返回 false
     * @see #clone()
     * @return {boolean}
     */
    public canClone(): boolean {
        return false
    }

    /**
     * 克隆
     * 复制自身实例
     * 仅仅在需要的情况下 重写此方法和 {@link #canClone()} 标识支持方便的的克隆操作
     * 默认实现不做任何操作 直接返回 null
     * @see #canClone()
     */
    public clone(): BaseObject | null {
        return null
    }

    public override toString(): string {
        return super.toString()
    }

    public override toLocaleString(): string {
        return super.toLocaleString()
    }

    public override valueOf(): Object {
        return super.valueOf()
    }

    public override hasOwnProperty(v: PropertyKey): boolean {
        return super.hasOwnProperty(v)
    }

    public override isPrototypeOf(v: Object): boolean {
        return super.isPrototypeOf(v)
    }

    public override propertyIsEnumerable(v: PropertyKey): boolean {
        return super.propertyIsEnumerable(v)
    }
}
